//平方数
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextLong()) { // 注意 while 处理多个 case
            long x = in.nextLong();
            long tmp1 = (long)Math.sqrt(x);
            long ret2 = (tmp1+1)*(tmp1+1);
            long ret3 = tmp1*tmp1;
            
            System.out.println((ret2-x > x-ret3 ? ret3 : ret2));
        }
    }
}
第一行包含两个整数n和q.
第二行包含n个整数, 表示a1,a2,....an.
接下来q行,每行包含两个整数 l和r.

输出描述：
输出q行,每行代表一次查询的结果.

#include <iostream>
using namespace std;

int main() 
{
    int n = 0;
    int q = 0;
    cin >> n >> q;
    int l = 0;
    int r = 0;
    long long arr[n];
    for (int i = 0; i < n && cin >> arr[i]; i++);
    for (int i = 1; i < n; i++)
    {
        arr[i] += arr[i - 1];
    }
    for (int i = 0; i < q && cin >> l >> r; i++)
    {
        if (l == 1)
        {
            cout << arr[r-1] << endl;
        }
        else 
        {
            cout << (arr[r-1] - arr[l-2]) << endl;
        }
        
    }
    return 0;
}
//77

class Solution {
    public List<List<Integer>> combine(int n, int k) {
        List<List<Integer>> ret = new ArrayList<>();
        List<Integer> tmp = new ArrayList<>();
        fun1(ret, tmp, n, k, 1);
        return ret;
    }

    public void fun1(List<List<Integer>> ret, List<Integer> tmp, 
                    int n, int k, int i) {
        if (i > n) {
            if (tmp.size() == k) {
                ret.add(new ArrayList<>(tmp));
            }
            return;
        }
        fun1(ret, tmp, n, k, i+1);
        tmp.add(i);
        fun1(ret, tmp, n, k, i+1);
        tmp.remove(tmp.size()-1);
    }
}